# !/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
===========================
@Time : 2022/8/17 0017 23:40
@Author : 测试开发工程师
@File : 2. 接口与路由技术.py
@Software: PyCharm
============================
"""

from logger_util import logger

"""
Flask 环境安装  
定义路由


Flask简介：
    Flask 是一个轻量级的 web 开发框架。它依赖 jinja2(路由模块) 和 Werkzeug WSGI(模板引擎) 服务的一个微型框架

Flask 环境准备： pip install flask
    中文文档： http://docs.jinkan.org/docs/flask
    英文文档： https://flask.palletsprojects.com/en/2.0.x/
    
定义路由：
通过装饰器@app.route 添加路由
@app.route('/hogwarts')
def api_demo2():
    return "这是霍格沃兹测试学院数据"

动态路由：
通过
app.route('/user/<username>')添加动态路由
添加动态路由：
@app.route('/listcases/<username>')
def select_case1(username):
    pass


地址尾部的"/"
路由的尾部带有"/"(浏览器的地址栏中输入和不输入"/"的效果一样)
路由的尾部没有"/"(输入的 URL 的结尾不能加"/"，会报错)


"""
# 1. 导入 Flask 模块
from flask import Flask

# 2. 创建 Flask 应用程序的实例
# 在当前模块： __name__ == __main__
app = Flask(__name__)

# 添加路由

"""
https://ceshiren.com/search?q=appium
https  --  协议
ceshiren.com -- host 域名
/search  --  路由
?q=appium  -- 请求参数
"""

@app.route("/")
def hello_world():
    return "<p>Hello,World!</p>"


@app.route('/userinfo/lili')
def hogwarts():
    return "这是霍格沃兹测试学院"


@app.route('/userinfo/hurry')
def hogwarts():
    return "这是霍格沃兹测试学院"


@app.route('/userinfo/tom')
def hogwarts1():
    return "这是霍格沃兹测试学院"


# 最终版

"""
限定类型：
路径中添加 <类型：变量名> 来限定变量的类型
@app.route('/post/<int:post_id>')
string: 缺省项 接受任何不包含斜杠的文本
int: 接受正整数
float: 接受正浮点数
path : 类似 string 但可以包含斜杠
uuid : 接受 UUID 字符串
"""


# 动态路由
@app.route('/userinfo/<string:username>')
def hogwarts(username):
    logger.info(f'这是{username}同学的个人信息')
    return f"这是{username}同学的个人信息"


if __name__ == '__main__':
    # flask 服务启动起来
    # 轮询等待的方式，等待浏览器发来请求
    # 会一直接受请求，直到程序停止
    app.run()

"""
地址尾部的 "/"
    路由的尾部带有 "/" （浏览器的地址栏中输入和不输入 "/" 的效果一样）
    路由的尾部带没有 "/" （输入的尾部不能加 "/"，加了会报错）

"""
